/* POJ 1182 foodchain
 * Union-Find Disjoint Set */
#if 0
#include<iostream>
#include<cstdio>
using std::cin;
using std::cout;
using std::scanf;
// using namespace std;
const int maxn = 50006;
int N, K;
int ans = 0;
int par[maxn*3], rank[maxn*3];
void init(int n) {
  for(int i=0; i<n; ++i) {
    par[i] = i;
    rank[i] = 0;
  }
}
int find(int x) {
  if(par[x] == x) {
    return x;
  }
  else {
    return par[x] = find(par[x]);
  }
}
void unite(int x, int y) {
  x = find(x);
  y = find(y);
  if(x==y) return;
  if(rank[x]<rank[y]) {
    par[x] = y;
  }
  else {
    par[y] = x;
    if(rank[x]==rank[y])rank[x]++;
  }
}
bool same(int x, int y) {
  return find(x) == find(y);
}
void solve() {
  int t, x, y;
  // cin>>t>>x>>y;
  scanf("%d%d%d", &t, &x, &y);
  if(x<0 || N<=x || y<0 || N<=y) {
    ans++;
    return;
  }
  if(t==1) {
    if(same(x, y+N) || same(x, y+2*N)) {
      ans++;
    }
    else {
      unite(x, y);unite(x+N, y+N); unite(x+N*2, y+N*2);
    }
  }
  else {
    if(same(x, y) || same(x, y+2*N)) {
      ans++;
    }
    else {
      unite(x, y+N);
      unite(x+N, y+2*N);
      unite(x+2*N, y);
    }
  }
  return;
}
int main() {
  cin>>N>>K;
  init(N*3);
  while(K--) {
    solve();
  }
  cout<<ans<<'\n';
  return 0;
}
#endif

#include<iostream>
using namespace std;
int n;
int solve() {
    int cnt = 0;
    for (int i = 1; i*i < n; ++i) {
        if (n % i == 0) {
            if (n / i == i) {
                cnt += 1;
            }
            else cnt += 2;
        }
    }
    return cnt;
}
int main() {
    int tc; cin >> tc;
    for (int i = 0; i < tc; ++i) {
        cin >> n;
        cout << solve() << '\n';
    }
}